// 给你一个下标从 0 开始，大小为 m x n 的二进制矩阵 land ，其中 0 表示一单位的森林土地，1 表示一单位的农场土地。

// 为了让农场保持有序，农场土地之间以矩形的 农场组 的形式存在。每一个农场组都 仅 包含农场土地。且题目保证不会有两个农场组相邻，也就是说一个农场组中的任何一块土地都 不会 与另一个农场组的任何一块土地在四个方向上相邻。

// land 可以用坐标系统表示，其中 land 左上角坐标为 (0, 0) ，右下角坐标为 (m-1, n-1) 。请你找到所有 农场组 最左上角和最右下角的坐标。一个左上角坐标为 (r1, c1) 且右下角坐标为 (r2, c2) 的 农场组 用长度为 4 的数组 [r1, c1, r2, c2] 表示。

// 请你返回一个二维数组，它包含若干个长度为 4 的子数组，每个子数组表示 land 中的一个 农场组 。如果没有任何农场组，请你返回一个空数组。可以以 任意顺序 返回所有农场组。


#include<bits/stdc++.h>
using namespace std;

class Solution {
public:
    vector<vector<int>> findFarmland(vector<vector<int>>& land) {
        vector<vector<int>> res;
        if(land.size()==0){
            return res;
        }
        for(int i=0;i<land.size();++i){
            for(int j=0;j<land[0].size();++j){
                if(land[i][j]==1){
                    vector<int> vec;
                    vec.emplace_back(i);
                    vec.emplace_back(j);
                    int temp_i=i+1;
                    int temp_j=j;
                    while(temp_i<land.size()){
                        if(land[temp_i][temp_j]==1){
                            land[temp_i][temp_j]=0;
                            ++temp_i;
                            continue;
                        }
                        else{
                            break;
                        }
                    }
                    vec.emplace_back(temp_i-1);
                    int temp_i2 = i;
                    temp_j = j+1;
                    while(temp_j<land[0].size()){
                        if(land[temp_i2][temp_j]==1){
                            land[temp_i2][temp_j]=0;
                            ++temp_j;
                            continue;
                        }
                        else{
                            break;
                        }
                    }
                    vec.emplace_back(temp_j-1);
                    for(int k=i;k<temp_i;++k){
                        for(int kj=j;kj<temp_j;++kj){
                            land[k][kj]=0;
                        }
                    }
                res.emplace_back(vec);
                }
            }
        }
        return res;
    }
};